import request from '@/utils/request';
import qs from 'qs';
import { ResponseData } from '../typing';
// 参数接口
export interface GetOrderStatisticsUnitParams {
    // 项目CODE集合 */
    projectCode?: Record<string, unknown>[];
    // 提报开始时间 */
    orderTimeStart?: Record<string, unknown>;
    // 提报结束时间 */
    orderTimeEnd?: Record<string, unknown>;
    // 工单类型，0报修、1投诉 */
    orderType?: number;
    // 责任归属，0物业、1地产 */
    orderChargeCompany?: number;
    // 维度，0事业部、1项目 */
    dimension?: number;
}
// 响应接口
export interface GetOrderStatisticsUnitRes {
    code: number;
    data: {
        // 项目CODE */
        projectCode: string;
        // 项目名 */
        projectName: string;
        // 统计数据 */
        statisticsList: {
            // 项目CODE */
            chargePersonId: string;
            // 项目名 */
            chargePerson: string;
            statisticsInfo: {
                // 工单总量 */
                orderTotal: number;
                // 及时接单率 */
                timelyRate: Record<string, unknown>;
                // 超时工单数 */
                overtimeCount: number;
                // 首单跟进数 */
                firstFollowTotal: number;
                // 首单跟进率 */
                firstFollowRate: Record<string, unknown>;
                // 工单完成量 */
                finishTotalCount: number;
                // 工单完成率 */
                finishTotalRate: Record<string, unknown>;
                // 工单评价满意数量 */
                satisfyTotal: number;
                // 工单评价满意率 */
                satisfyTotalRate: Record<string, unknown>;
                // 工单平均完成时长 */
                averageFinishTimeTotal: number;
                // 工单平均完成时长文字展示 */
                averageFinishTimeTotalStr: string;
                // 非正常关闭量 */
                abnormalFinishTotal: number;
                // 非正常关闭率 */
                abnormalFinishRate: Record<string, unknown>;
                // 作废工单量 */
                cancelTotal: number;
                // 作废工单率 */
                cancelRate: Record<string, unknown>;
                // 超30天未完成报事量 */
                overtimeIncompleteTotal: number;
                // 分类 */
                statisticsList: {
                    // 工单分类 */
                    orderType: string;
                    // 统计数据 */
                    statisticsList: {
                        // 分类名 */
                        classifyName: string;
                        statisticsInfo: {
                            // 工单总量 */
                            orderTotal: number;
                            // 工单占比 */
                            orderRatio: Record<string, unknown>;
                            // 工单完成量 */
                            finishTotalCount: number;
                            // 工单完成率 */
                            finishTotalRate: Record<string, unknown>;
                            // 工单评价满意数量 */
                            satisfyTotal: number;
                            // 工单评价满意率 */
                            satisfyTotalRate: Record<string, unknown>;
                            // 工单平均完成时长 */
                            averageFinishTimeTotal: number;
                            // 工单平均完成时长文字展示 */
                            averageFinishTimeTotalStr: string;
                        };
                    }[];
                }[];
            };
        }[];
    }[];
    msg: string;
}
/**
 * 工单统计分析-事业部
 * @param {object} params 管理后台 - 统计分析
 * @param {array} params.projectCode 项目CODE集合
 * @param {object} params.orderTimeStart 提报开始时间
 * @param {object} params.orderTimeEnd 提报结束时间
 * @param {number} params.orderType 工单类型，0报修、1投诉
 * @param {number} params.orderChargeCompany 责任归属，0物业、1地产
 * @param {number} params.dimension 维度，0事业部、1项目
 * @returns
 */
export function getOrderStatisticsUnit(params: GetOrderStatisticsUnitParams): Promise<GetOrderStatisticsUnitRes> {
    return request.post(`/yfwy/order/getOrderStatisticsUnit`, params);
}
// 参数接口
export interface GetOrderStatisticsProjectParams {
    // 项目CODE集合 */
    projectCode?: Record<string, unknown>[];
    // 提报开始时间 */
    orderTimeStart?: Record<string, unknown>;
    // 提报结束时间 */
    orderTimeEnd?: Record<string, unknown>;
    // 工单类型，0报修、1投诉 */
    orderType?: number;
    // 责任归属，0物业、1地产 */
    orderChargeCompany?: number;
    // 维度，0事业部、1项目 */
    dimension?: number;
}
// 响应接口
export interface GetOrderStatisticsProjectRes {
    code: number;
    data: {
        // 项目CODE */
        projectCode: string;
        // 项目名 */
        projectName: string;
        // 统计数据 */
        statisticsList: {
            // 负责人ID */
            chargePersonId: number;
            // 负责人 */
            chargePerson: string;
            statisticsInfo: {
                // 工单总量 */
                orderTotal: number;
                // 及时接单率 */
                timelyRate: Record<string, unknown>;
                // 超时工单数 */
                overtimeCount: number;
                // 首单跟进数 */
                firstFollowTotal: number;
                // 首单跟进率 */
                firstFollowRate: Record<string, unknown>;
                // 工单完成量 */
                finishTotalCount: number;
                // 工单完成率 */
                finishTotalRate: Record<string, unknown>;
                // 工单评价满意数量 */
                satisfyTotal: number;
                // 工单评价满意率 */
                satisfyTotalRate: Record<string, unknown>;
                // 工单平均完成时长 */
                averageFinishTimeTotal: number;
                // 工单平均完成时长文字展示 */
                averageFinishTimeTotalStr: string;
                // 非正常关闭量 */
                abnormalFinishTotal: number;
                // 非正常关闭率 */
                abnormalFinishRate: Record<string, unknown>;
                // 作废工单量 */
                cancelTotal: number;
                // 作废工单率 */
                cancelRate: Record<string, unknown>;
                // 超30天未完成报事量 */
                overtimeIncompleteTotal: number;
                // 分类 */
                statisticsList: {
                    // 工单分类 */
                    orderType: string;
                    // 统计数据 */
                    statisticsList: {
                        // 分类名 */
                        classifyName: string;
                        statisticsInfo: {
                            // 工单总量 */
                            orderTotal: number;
                            // 工单占比 */
                            orderRatio: Record<string, unknown>;
                            // 工单完成量 */
                            finishTotalCount: number;
                            // 工单完成率 */
                            finishTotalRate: Record<string, unknown>;
                            // 工单评价满意数量 */
                            satisfyTotal: number;
                            // 工单评价满意率 */
                            satisfyTotalRate: Record<string, unknown>;
                            // 工单平均完成时长 */
                            averageFinishTimeTotal: number;
                            // 工单平均完成时长文字展示 */
                            averageFinishTimeTotalStr: string;
                        };
                    }[];
                }[];
            };
        }[];
    }[];
    msg: string;
}
/**
 * 工单统计分析-项目
 * @param {object} params 管理后台 - 统计分析
 * @param {array} params.projectCode 项目CODE集合
 * @param {object} params.orderTimeStart 提报开始时间
 * @param {object} params.orderTimeEnd 提报结束时间
 * @param {number} params.orderType 工单类型，0报修、1投诉
 * @param {number} params.orderChargeCompany 责任归属，0物业、1地产
 * @param {number} params.dimension 维度，0事业部、1项目
 * @returns
 */
export function getOrderStatisticsProject(params: GetOrderStatisticsProjectParams): Promise<GetOrderStatisticsProjectRes> {
    return request.post(`/yfwy/order/getOrderStatisticsProject`, params);
}
// 参数接口
export interface GetOrderStatisticsProjectPageParams {
    // 当前第几页(默认1) */
    current?: number;
    // 每页条数(默认20) */
    size?: number;
    // 项目CODE集合 */
    projectCodes?: Record<string, unknown>[];
    // 提报开始时间 */
    orderTimeStart?: Record<string, unknown>;
    // 提报结束时间 */
    orderTimeEnd?: Record<string, unknown>;
    // 工单类型，0报修、1投诉 */
    orderType?: number;
    // 责任归属，0物业、1地产 */
    orderChargeCompany?: number;
    // 维度，0事业部、1项目 */
    dimension?: number;
    // 工单属性，0业主提报、1员工提报（内部报修）、2员工替报 */
    orderProperty?: number;
    // 工单分类ID */
    orderClassifyId?: number;
    // 统计类型，0按事业部、1按项目 */
    statisticsType?: number;
    // 项目CODE（按事业部统计时使用，可单独传） */
    projectCode?: string;
    // 人员ID（按项目统计时使用，必须和项目CODE一起传） */
    chargePersonId?: string;
    // 下钻类型，0超时工单数 */
    detailType?: number;
    // （无需传值）是否及时接单，0否1是 */
    taskingTimely?: number;
    page?: {
        records?: {
            createTime?: string;
            updateTime?: string;
            creator?: Record<string, unknown>;
            updater?: Record<string, unknown>;
            // 主键 */
            id?: Record<string, unknown>;
            // 工单编号 */
            orderNum?: string;
            // 项目CODE */
            projectCode?: string;
            // 项目名 */
            projectName?: string;
            // 楼层ID */
            floorId?: Record<string, unknown>;
            // 房产ID */
            propertyId?: Record<string, unknown>;
            // 房产号 */
            propertyRoom?: string;
            // 业主ID */
            propertyOwnerId?: Record<string, unknown>;
            // 业主 */
            propertyOwner?: string;
            // 业主电话 */
            propertyPhone?: string;
            // 联系人 */
            contactPerson?: string;
            // 联系人电话 */
            contactPersonPhone?: string;
            // 工单类型，0报修、1投诉 */
            orderType?: Record<string, unknown>;
            // 工单子类，0户内报修、1公区报修 */
            orderTypeSub?: string;
            // 工单分类ID */
            orderClassifyId?: Record<string, unknown>;
            // 工单分类名 */
            orderClassifyName?: string;
            // 条线 */
            orderProfessionalLine?: string;
            // 提报时间 */
            orderTime?: string;
            // 工单内容 */
            content?: string;
            // 工单状态，1待接单、2处理中、3待审核、4已审核、5待评价、6已完成 */
            orderState?: Record<string, unknown>;
            // 工单完成原因，0关单、1强制关单、2作废 */
            orderFinishReason?: Record<string, unknown>;
            // 工单完成人ID */
            orderFinishPersonId?: Record<string, unknown>;
            // 工单完成人 */
            orderFinishPerson?: string;
            // 工单完成人电话 */
            orderFinishPersonPhone?: string;
            // 工单完成时间 */
            orderFinishTime?: string;
            // 工单来源（字典项），来访、来电等 */
            orderSource?: string;
            // 工单属性，0业主提报、1员工提报（内部报修）、2员工替报 */
            orderProperty?: Record<string, unknown>;
            // 负责人ID */
            orderChargePersonId?: Record<string, unknown>;
            // 负责人 */
            orderChargePerson?: string;
            // 负责人电话 */
            orderChargePersonPhone?: string;
            // 接单时间 */
            taskingTime?: string;
            // 是否及时接单，0否1是 */
            taskingTimely?: Record<string, unknown>;
            // 责任归属，0物业、1地产 */
            orderChargeCompany?: Record<string, unknown>;
            // 得分 */
            score?: Record<string, unknown>;
            // 得分内容 */
            scoreContent?: string;
            // 工单归属，0业主工单、1租户工单 */
            orderAscription?: Record<string, unknown>;
            // 租户ID，如果是租户工单 */
            renterId?: Record<string, unknown>;
            // 转单次数 */
            transferNum?: Record<string, unknown>;
            // 转地产时间 */
            transferTime?: string;
            // 回访状态，0无需回访、1未回访、2已回访 */
            visitState?: Record<string, unknown>;
            // 回访时间 */
            visitTime?: string;
            // 流程ID（流程表的ID） */
            flowId?: Record<string, unknown>;
            // 流程类型，0：强制关单、1：作废、2：投诉 */
            flowType?: Record<string, unknown>;
            // 提交审核日期 */
            flowStartTime?: string;
            // 审核完成日期 */
            flowEndTime?: string;
            // 创建人/提报人 */
            creatorName?: string;
            // 是否首单跟进，0否1是 */
            followFirst?: Record<string, unknown>;
            // 数据来源，0：PC、1：APP */
            dataResource?: Record<string, unknown>;
        }[];
        total?: Record<string, unknown>;
        size?: Record<string, unknown>;
        current?: Record<string, unknown>;
        orders?: {
            column?: string;
            asc?: boolean;
        }[];
        optimizeCountSql?: boolean;
        searchCount?: boolean;
        optimizeJoinOfCountSql?: boolean;
        maxLimit?: Record<string, unknown>;
        countId?: string;
        pages?: Record<string, unknown>;
    };
}
// 响应接口
export interface GetOrderStatisticsProjectPageRes {
    code: number;
    data: {
        size: number;
        total: number;
        current: number;
        records: {
            // 主键 */
            id: number;
            // 工单编号 */
            orderNum: string;
            // 项目名 */
            projectName: string;
            // 房产号 */
            propertyRoom: string;
            // 业主 */
            propertyOwner: string;
            // 业主电话 */
            propertyPhone: string;
            // 联系人 */
            contactPerson: string;
            // 联系人电话 */
            contactPersonPhone: string;
            // 工单类型，0报修、1投诉 */
            orderType: number;
            // 工单子类，0户内报修、1公区报修 */
            orderTypeSub: string;
            // 工单分类名 */
            orderClassifyName: string;
            // 条线 */
            orderProfessionalLine: string;
            // 提报时间 */
            orderTime: Record<string, unknown>;
            // 工单内容 */
            content: string;
            // 工单状态，1待接单、2处理中、3待审核、4已审核、5待评价、6已完成 */
            orderState: number;
            // 工单来源（字典项），来访、来电等 */
            orderSource: string;
            // 负责人 */
            orderChargePerson: string;
            // 接单时间 */
            taskingTime: Record<string, unknown>;
            // 是否及时接单，0否1是 */
            taskingTimely: number;
            // 责任归属，0物业、1地产 */
            orderChargeCompany: number;
            // 得分 */
            score: number;
            // 工单属性，0业主提报、1员工提报（内部报修）、2员工替报 */
            orderProperty: number;
            // 转地产时间 */
            transferTime: Record<string, unknown>;
            // 流程类型，0：强制关单、1：作废、2：投诉 */
            flowType: number;
        }[];
        pages: number;
    };
    msg: string;
}
/**
 * 工单统计分析-项目-下钻（分页）
 * @param {object} params 管理后台 - 统计分析 - 下钻查询
 * @param {number} params.current 当前第几页(默认1)
 * @param {number} params.size 每页条数(默认20)
 * @param {array} params.projectCodes 项目CODE集合
 * @param {object} params.orderTimeStart 提报开始时间
 * @param {object} params.orderTimeEnd 提报结束时间
 * @param {number} params.orderType 工单类型，0报修、1投诉
 * @param {number} params.orderChargeCompany 责任归属，0物业、1地产
 * @param {number} params.dimension 维度，0事业部、1项目
 * @param {number} params.orderProperty 工单属性，0业主提报、1员工提报（内部报修）、2员工替报
 * @param {number} params.orderClassifyId 工单分类ID
 * @param {number} params.statisticsType 统计类型，0按事业部、1按项目
 * @param {string} params.projectCode 项目CODE（按事业部统计时使用，可单独传）
 * @param {string} params.chargePersonId 人员ID（按项目统计时使用，必须和项目CODE一起传）
 * @param {number} params.detailType 下钻类型，0超时工单数
 * @param {number} params.taskingTimely （无需传值）是否及时接单，0否1是
 * @param {object} params.page
 * @returns
 */
export function getOrderStatisticsProjectPage(params: GetOrderStatisticsProjectPageParams): Promise<GetOrderStatisticsProjectPageRes> {
    return request.post(`/yfwy/order/getOrderStatisticsProjectPage`, params);
}
